#include <iostream>

int func(int a, int b = 10, int c = 100)
{
    return a + b + c;
}

// 1. 如果某个位置参数有默认值，那么从这个位置往后，从左向右，必须都要有默认值
// 2. 如果函数声明有默认值，函数实现的时候就不能有默认参数

int func(int a = 1, int b = 300);

int func(int a, int b)
{
    return a * b;
}

int main(int argc, char const *argv[])
{

    // std::cout << func(10) << std::endl;         // 会出错，有二义性
    // std::cout << func(10, 20) << std::endl;     // 也有二义性
    std::cout << func(10, 20, 30) << std::endl; // 没有二义性

    return 0;
}
